home *** CD-ROM | disk | FTP | other *** search
Wrap
# Source Generated with Decompyle++ # File: in.pyc (Python 2.6) import cups import gobject from timedops import TimedOperation from base import * class ChooseNetworkPrinter(Question): def __init__(self, troubleshooter): Question.__init__(self, troubleshooter, 'Choose network printer') page1 = self.initial_vbox(_('Choose Network Printer'), _("Please select the network printer you are trying to use from the list below. If it does not appear in the list, select 'Not listed'.")) tv = gtk.TreeView() name = gtk.TreeViewColumn(_('Name'), gtk.CellRendererText(), text = 0) location = gtk.TreeViewColumn(_('Location'), gtk.CellRendererText(), text = 1) info = gtk.TreeViewColumn(_('Information'), gtk.CellRendererText(), text = 2) name.set_property('resizable', True) location.set_property('resizable', True) info.set_property('resizable', True) tv.append_column(name) tv.append_column(location) tv.append_column(info) tv.set_rules_hint(True) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) sw.set_shadow_type(gtk.SHADOW_IN) sw.add(tv) page1.pack_start(sw, True, True, 0) self.treeview = tv troubleshooter.new_page(page1, self) def display(self): answers = self.troubleshooter.answers if answers['cups_queue_listed']: return False if not answers.get('remote_server_cups', False): return False server = answers['remote_server_name'] model = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_PYOBJECT) self.model = model self.treeview.set_model(model) iter = model.append(None) model.set(iter, 0, _('Not listed'), 1, '', 2, '', 3, None) parent = self.troubleshooter.get_window() try: cups.setServer(server) self.op = TimedOperation(cups.Connection, parent = parent) c = self.op.run() self.op = TimedOperation(c.getDests, parent = parent) dests = self.op.run() printers = None dests_list = [] for name, instance in dests.iteritems(): dest = None if name == None: continue if instance != None: queue = '%s/%s' % (name, instance) else: queue = name if printers == None: self.op = TimedOperation(c.getPrinters) printers = self.op.run() if not printers.has_key(name): info = _('Unknown') location = _('Unknown') else: printer = printers[name] info = printer.get('printer-info', _('Unknown')) location = printer.get('printer-location', _('Unknown')) dests_list.append((queue, location, info, dest)) dests_list.sort((lambda x, y: cmp(x[0], y[0]))) for queue, location, info, dest in dests_list: iter = model.append(None) model.set(iter, 0, queue, 1, location, 2, info, 3, dest) except cups.HTTPError: None if not server else answers['cups_queue_listed'] None if not server else answers['cups_queue_listed'] except cups.IPPError: pass except RuntimeError: pass except: None if not server else answers['cups_queue_listed'] return True def connect_signals(self, handler): self.signal_id = self.treeview.connect('cursor-changed', handler) def disconnect_signals(self): self.treeview.disconnect(self.signal_id) def can_click_forward(self): (model, iter) = self.treeview.get_selection().get_selected() if iter == None: return False return True def collect_answer(self): if not self.troubleshooter.answers.get('remote_server_cups', False): return { } (model, iter) = self.treeview.get_selection().get_selected() if not model: return { } dest = model.get_value(iter, 3) if dest == None: class enum_dests: def __init__(self, model): self.dests = [] model.foreach(self.each, None) def each(self, model, path, iter, user_data): dest = model.get_value(iter, 3) if dest: self.dests.append((dest.name, dest.instance)) return { 'remote_cups_queue_listed': False, 'remote_cups_dests_available': enum_dests(model).dests } return { 'remote_cups_queue_listed': True, 'remote_cups_dest': dest, 'remote_cups_queue': dest.name, 'remote_cups_instance': dest.instance } def cancel_operation(self): self.op.cancel()